import {Collection, CopyDocument, DataBoard, Document, Grid, Key, List, View} from '@element-plus/icons-vue'

export interface StatisticsItem {
    key: string           // 数据字段名（对应后端返回的key）
    title: string         // 中文名称
    description: string   // 描述文字
    icon: any            // Element Plus图标组件
    colorClass: string    // 简化的颜色类名（如：bg-purple）
    order: number         // 显示顺序
}

/**
 * 统计项配置
 * 通过修改此配置可以轻松添加、删除或调整统计项
 */
export const STATISTICS_ITEMS: StatisticsItem[] = [
    {
        key: 'products',
        title: '产品总数',
        description: '管理的数据库产品',
        icon: Collection,
        colorClass: 'bg-purple',
        order: 1
    },
    {
        key: 'schemas',
        title: 'Schema总数',
        description: '数据库模式',
        icon: DataBoard,
        colorClass: 'bg-green',
        order: 2
    },
    {
        key: 'tables',
        title: '数据表总数',
        description: '管理的数据表',
        icon: Grid,
        colorClass: 'bg-orange',
        order: 3
    },
    {
        key: 'columns',
        title: '字段总数',
        description: '表字段数量',
        icon: List,
        colorClass: 'bg-blue',
        order: 4
    },
    {
        key: 'constraints',
        title: '约束总数',
        description: '表约束数量',
        icon: Key,
        colorClass: 'bg-pink',
        order: 5
    },
    {
        key: 'indexes',
        title: '索引总数',
        description: '表索引数量',
        icon: View,
        colorClass: 'bg-teal',
        order: 6
    },
    {
        key: 'dictionaries',
        title: '数据字典总数',
        description: '数据字典条目',
        icon: Document,
        colorClass: 'bg-red',
        order: 7
    },
    {
        key: 'fieldLibraries',
        title: '字段库总数',
        description: '预置的字段库',
        icon: CopyDocument,
        colorClass: 'bg-cyan',
        order: 8
    }
]

/**
 * 根据显示顺序获取排序后的统计项
 */
export const getOrderedStatisticsItems = (): StatisticsItem[] => {
    return [...STATISTICS_ITEMS].sort((a, b) => a.order - b.order)
}

/**
 * 根据key获取统计项配置
 */
export const getStatisticsItemByKey = (key: string): StatisticsItem | undefined => {
    return STATISTICS_ITEMS.find(item => item.key === key)
}

/**
 * 获取所有统计项的key列表
 */
export const getStatisticsKeys = (): string[] => {
    return STATISTICS_ITEMS.map(item => item.key)
}